<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Promise</title>
</head>
<body>

<script>
    function queryData(url){
        var p = new Promise(function(resolve,reject){
            let xml = new XMLHttpRequest();
            xml.open("get",url);
            xml.send(null);
            xml.onreadystatechange = function(){ //改变状态值时触发
                if(xml.readyState != 4){   //如果不到状态4，说明不成功，直接return出去
                    return false;
                }
                if(xml.readyState == 4 && xml.status >=200 && xml.status <300){
                    resolve(xml.responseText);
                }else{
                    reject("服务器错误！")
                }
            }
        });

        return p;
    }

    // 一、获取多个ajax请求
    queryData("../AData/data.json").then(function(res){
        console.log(res);
        return queryData("../AData/data.json");
    }).then(function(res){
        console.log(res);   //返回的是35行的数据
    })

    /* 二、 then 参数中的函数返回值
    1.返回Promise实例对象: 返回的该实例对象会调用下一个then；

    2.返回普通值： 返回普通值会直接传递给下一个then，通过then参数中函数的参数接收该值
        queryData("../AData/data.json").then(function(res){
            console.log(res);
            return "hello";
        }).then(function(res){
            console.log(res);   //hello
        });

    * */

</script>
</body>
</html>
